local curr = redis.call('GET',KEYS[1]);
if( curr == false) then
	redis.call('SET',KEYS[1],0)
	if ( ARGV[3] ~= nil) then
		redis.call('EXPIRE',KEYS[1],ARGV[3])
	end
	return 0
elseif curr and tonumber(curr) >= tonumber(ARGV[2]) then
	redis.call('SET',KEYS[1],0)
	if ( ARGV[3] ~= nil) then
		redis.call('EXPIRE',KEYS[1],ARGV[3])
	end
	return 0
else
	redis.call('INCRBY',keys[1],ARGV[1])
	return curr + ARGV[1]
end
